package com.comprental.controller;

import com.comprental.annotation.SysLog;
import com.comprental.dto.LeasingCreditDTO;
import com.comprental.service.LeasingCreditService;
import com.comprental.utils.R;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * @Author: zhangjun
 * @Date: 2020/8/17 9:01
 * @Description: 信用租赁-商户对接
 */
@RestController
@AllArgsConstructor
@RequestMapping("/credit")
public class LeasingCreditController {
    private LeasingCreditService creditService;
    /**
     * showdoc
     * @catalog 信用租赁/商户对接
     * @title 提交授信资料到商家侧
     * @description 提交授信资料到商家侧
     * @method post
     * @url /credit/information/commercial/commit
     * @param method 必填 string fenqile.credit.submit 当前请求接口为 提交授信资料
     * @param orderId 必填 string 授信单号，也是风控侧请求唯一编号
     * @param uid 必填 int 用户ID
     * @param name 选填 string 用户姓名
     * @param creditId 必填 string 用户身份证号
     * @param mobile 必填 string 用户手机号码
     * @param skuId 选填 string 商品skuId
     * @param productName 选填 string 商品名称
     * @param martAmount 选填 string 市场价
     * @param depositeAmount 选填 int 押金金额
     * @param estimateRentBeginTime 选填 date 预计租期开始时间
     * @param estimateRentEndTime 选填 date 预计租期结束时间
     * @param applicationTime 选填 date 申请时间
     *
     * @param deliveryName 必选 string 收货人姓名
     * @param deliveryMobile  必填 string  收货人联系方式
     * @param address  必填 string  收货地址
     * @param estimateCreditLimit  必填 int  建议免押额度 分
     * @param riskLevel  必填 string  乐信风险等级
     * @param sign  必填 string  签名
     * @param amountTypes  必填 list  期限内对应的价格，具体字段如下：
     * @param ├amountType  必填 byte  租赁类型，1-长租，2-短租
     * @param ├calType  必填 byte  计价方式，1-月，2-日
     * @param ├calPeriod  必填 int  租期
     * @param ├amount  必填 int  租金金额 分
     *
     * @return_param code int 0为成功，其他失败（见概述：返回errcode说明）
     * @return_param msg string 返回消息
     * @remark
     */
    /*@SysLog("提交授信资料到商家侧")
    @PostMapping("/information/commercial/commit")
    public R commit(@RequestBody LeasingCreditDTO creditDTO) {
        //入库保存
        return creditService.saveLeasingCredit(creditDTO);
    }*/

    /**
     * showdoc
     * @catalog 信用租赁/商户对接
     * @title 主动轮询商家接口查询免押额度
     * @description 主动轮询商家接口查询免押额度
     * @method get
     * @url /credit/information/commercial/query
     * @param method 必填 string fenqile.credit.query
     * @param orderId 必填 string 授信单号，也是风控侧请求唯一编号
     * @param uid 必填 int 用户ID
     * @param sign  必填 string  签名
     *
     * @return_param code int 0为成功，其他失败（见概述：返回errcode说明）
     * @return_param creditStatusDesc string 授信成功消息
     * @return_param totalDepositQuota int 授信额度
     * @remark
     */
    /*@SysLog("主动轮询商家接口查询免押额度")
    @GetMapping("/information/commercial/query")
    public R query(@RequestParam Map map) {
        return creditService.queryCreditLine(map);
    }*/

    /**
     * showdoc
     * @catalog 信用租赁/商户对接
     * @title 商家授信完成后回调
     * @description 商家授信完成后回调
     * @method get
     * @url /credit/information/commercial/callback
     * @param method 必填 string fenqile.rent.credit.callback
     * @param order_id 必填 string 授信单号，也是风控侧请求唯一编号
     * @param uid 必填 int 用户ID
     * @param merchant_id 必填 string 商户ID
     * @param credit_status_desc string 授信成功消息
     * @param total_deposit_quota int 授信额度
     * @return_param code int 0为成功，其他失败（见概述：返回errcode说明）
     * @remark
     */
    @SysLog("商家授信完成后回调")
    @PostMapping("/information/commercial/callback")
    public R callback(@RequestBody LeasingCreditDTO creditDTO) throws JsonProcessingException {
        return creditService.creditCallBack(creditDTO);
    }

}
